perm filename XX[7,ALS] blob sn#032371 filedate 1973-04-02 generic text, type T, neo UTF8
00100	COMMENT ⊗   VALID 00004 PAGES
00200	C REC  PAGE   DESCRIPTION
00300	C00001 00001
00400	C00002 00002	\|$$M1NGR30$M2BDI25$M3CTL25$M4NGB25$MFFIX25$MCFOOBAZ$.
00500	C00008 00003	$F2$CThis writeup is $F1MRPP3.WRU[XGP,REM]  $F31973 APR 01 0703 p.2
00600	C00013 00004	$F2$CThis writeup is $F1MRPP3.WRU[XGP,REM]  $F31973 APR 01 0703 p.3
00700	C00015 ENDMK
00800	C⊗;
     

00100	\|$$M1NGR30;$M2BDI25;$M3CTL25;$M4NGB25;$MFFIX25;$MCFOOBAZ[2,REM]$.
00200	$F2$CThis writeup is $F1MRPP3.WRU[XGP,REM]  $F31973 APR 01 0703 p.1
00300	
00400	$F3$CMaas Research Paper Plotter program, version 3 (earlier versions in 1969 used Calcomp 565)
00500	$F2$CProgram to switch fonts and justify text, by Robert Elton Maas, 1973 March
00600	$CThe system command to run this program is $F1RU MRPP3[XGP,REM]
00700	
00800	$F3$J	The program asks for a command string of
00900	the form <OUTPUT FILE>←<INPUT FILE> with perhaps switches after the input file name.
01000	The input file must not contain line numbers,
01100	but may contain a TV-EDIT directory which will be ignored.
01200	It may also contain XGP escape characters (RUBOUT followed by ↓ or α)
01300	at most places in the file.
01400	The output file will be in a form that can be copied directly to the
01500	XGP in mode 0 by means of the "XG" command,
01600	and in addition there will be a file QQXGP.RPG
01700	written, which contains the font switches needed for listing the file
01800	on the XGP.  Upon exit, it will put $F1XG @QQXGP.RPG
01900	$F3into your TTY buffer so that all you have to do is hit carriage return
02000	to gronk the XGP.
02100		The first character of the input file will be interpreted as the
02200	escape character you wish to use initially.
02300	(In the remainder of this writeup, the character $FC1$F3 represents whatever
02400	Escape Character you have in effect at the moment.)
02500	Subsequent occurrances
02600	of this character will escape to command mode and
02700	cause special things to happen depending on the next character (see below).
02800	If, however, the second character of your file is | or . then this program will
02900	assume you left out the initial definition of the break character, and will
03000	retroactively escape on the first character.
03100	Using this feature allows you to create files that may be
03200	concatinated without re-editing anything.
03300	Simply begin each file
03400	with $FC1$F3|$FC1$F3 or $FC1$F3.<crlf>
03500	and delete directory pages whenever concatinating.
03600		Below is a list of commands, where
03700	$F4<N>$F3 represents a character in the range of 0,1,2,...,9,A,B,...,F
03800	that specifies the font ID number,
03900	$F4<KH>$F3 represents any character,
04000	and $F4<FONT>$F3 represents a font filename (defaults are .FNT[XGP,SYS])$.
04100	
04200	$←R$-L$/'4;$→w$+L$→l$←w$/'2;$¬R$→r$.
04300	$FC1$FF|<KH>		$j$F3(changes the escape character to <CHARACTER>)$.
04400	$FC1$FFM<N><FONT>;	$j$F3(causes the font to be compiled, and selects it now)$.
04500	$FC1$FFF<N>		$j$F3(selects a font which has already been compiled)$.
04600	$FC1$FFS		$j$F3(generates a sample of the currently-selected font, see bulletin board)$.
04700	$FC1$FF.		$j$F3(everything until next crlf is a comment, typed on tty but not included in output file)$.
04800	$FC11			$j$F3(quotes the escape character, same kludge as "" in FORTRAN or ALGOL)$.
04900	$FC1$FFJ		$j$F3(begins full-justify submode, use $FC1$F3. to get out of it.  While in this
05000	  mode, the only escape command (either rubout-style or $FC1$F3-style)
05100	  that is legal is "change font")$.
05200	$FC1$FFC		$j$F3(begins center-the-line mode, until the next line feed occurs)$.
05300	
05400	$F4Commands not yet implemented:
05500	$FC1$FFf<N>		$j$F3(selects a font for just one character, then back to old font)$.
05600	$FC1$FFR		$j$F3(begins align-text-against-right-margin-mode,
05700	  until the next line feed occurs)$.
05800	$FC1$FF≡		$j$F3(begins "pass exactly as-is" mode, suppresses
05900	  /XJ mode until $FC1$FF.$F3 occurs)$.
06000	
06100	$F4Switches not yet implemented:
06200	$FF/XAPJUS		$j$F3(no command characters, will replace XAPJUS.SAI 2-way mode)$.
06300	$FF/XJ			$j$F3(unless in paragraph, center,  right-align, or as-it-is
06400	  mode, text will be parsed by xapjus scanner)$.
06500	
06600	
     

00100	$F2$CThis writeup is $F1MRPP3.WRU[XGP,REM]  $F31973 APR 01 0703 p.2
00200	
00300	$F1		Q-REGISTERS
00400	$F3$J	There are 128 registers which can hold any 36-bit integer,
00500	usually the horizonal coordinate of some column on the page.
00600	The idea is to allow specification of multi-column tables and
00700	$F2superscripts-above-subscripts$F3 in an easy and flexable way,
00800	including automatic allocation of such things as "$F21/5 of a page$F3"
00900	by simple division.  Each register is specified by an ASCII
01000	character, hence some registers are actually inaccessible, but
01100	who cares?  Register 0 (null character, inaccessible usually) is
01200	called the "$F2accumulator$F3" and is the intermediate storage for
01300	all sequences of arithmetic calculation.  Register '56 (the period
01400	character) always represents the current column location.
01500	Every time a character is written, this q-register is updated to
01600	account for the space used up by the character, and if you try to
01700	write in this q-register, a column select will be generated in
01800	your output file as well as updating the q-register to reflect
01900	the column select.
02000	Q-reg's L and R are the LEFT-MARGIN and the RIGHT-MARGIN.
02100	The commands are shown below, where the
02200	letter Q represents any character, and is used to select a
02300	q-register -- however, if Q is the right-apostrophe "'", then
02400	instead of reading from a q-register, the octal digits from here
02500	to the next semicolon are assembled into an unsigned constant
02600	and that constant acts as an immediate operand: $.
02700	
02800	$←R$-L$/'12;$→w$←L$+w$→l$←R$-w$→r$.
02900	$FC1$FF←Q	$F3(Load ac from q-reg)
03000	$FC1$FF+Q	$F3(ac plus q-reg, result in ac)
03100	$FC1$FF-Q	$F3(ac minus q-reg, result in ac)
03200	$FC1$FF¬Q	$F3(q-reg minus ac, result in ac)
03300	$FC1$FF*Q	$F3(ac times q-reg, result in ac)
03400	$FC1$FF/Q	$F3(ac divided by q-reg, result (quotient) in ac)
03500	$FC1$FF\Q	$F3(q-reg divided by ac, result (quotient) in ac)
03600	$FC1$FF~Q	$F3(maximum of ac and q-reg, result in ac)
03700	$FC1$FF_Q	$F3(minimum of ac and q-reg, result in ac)
03800	$FC1$FF→Q	$F3(store contents of ac into q-reg, immediate operand not allowed)
03900	$FC1$FF↑Q	$F3(move text up q/200 inch)
04000	$FC1$FF↓Q	$F3(move text down q/200 inch)
04100	$FC1$FFj$F3 or $FC1$FFc$.
04200	$F3$j(same as $FC1$F3J and $FC1$F3C except it sets up temporary margins from q-registers
04300	l and r) $.
04400	
04500	$F4Commands not yet implemented:
04600	$FC1$FF%Q	$F3(ac divided by q-reg, remainder in ac)
04700	$FC1$FFULABR$F3$j(underline from location L to location R,
04800	on scan line A, with line thickness B -- each of L,A,B,R may be a q-reg
04900	or an immediate operand)$.
05000	$FC1$FF↔Q	$F3(swap the ac with the q-reg, immediate operand not allowed)
05100	
05200	$F4Special meanings of the Q character not implemented:
05300	$FF=<decimal digits>;	$F3(Decimal immediate operand)
05400	$FFwq	$F3(operand is width of character q in current font)
05500	
     

00100	$F2$CThis writeup is $F1MRPP3.WRU[XGP,REM]  $F31973 APR 01 0703 p.3
00200	
00300	$F4Example of usage, making five columns on a page:$F3
00400	$FC1$FF←R$FC1$FF-L$FC1$FF/'5;$FC1$FF→w$FC1$FF.			$F3q-reg w contains width of a col
00500	$FC1$FF←L$FC1$FF→1$FC1$FF+w$FC1$FF→2$FC1$FF+w$FC1$FF$.
00600	→3$FC1$FF+w$FC1$FF→4$FC1$FF+w$FC1$FF→5$FC1$FF.	$F3q-reg's 1,2,3,4,5 contain the column loc's
00700	$FC1$FF←1$FC1$FF→.Hello$FC1$FF←2$FC1$FF→.This$FC1$FF←3$FC1$FF→.Is$FC1$FF←4$FC1$FF→$.
00800	.A$FC1$FF←5$FC1$FF→.Test.$FC1$FF.	$F3one word in each column
00900	$←R$-L$/'5;$→w$.			q-reg w contains width of a column
01000	$←L$→1$+w$→2$+w$→3$+w$→4$+w$→5$.	q-reg's 1,2,3,4,5 contain the column loc's
01100	$←1$→.Hello$←2$→.This$←3$→.Is$←4$→.A$←5$→.Test.
01200	$←'20;$→↑$←'14;$→↓$.
01300	$←1$→.$F1X$←.$→a$F2$↑↑x+2-i$←.$→b$←a$→.$↓↓foo$←.$~b$→.$.
01400	$F1+Y$←.$→a$F2$↑↑2$←.$→b$←a$→.$↓↓baz$.
01500	$←2$→.$F1Guess$.
01600	$←3$→.$F2What$.
01700	$←4$→.$F3That$.
01800	$←5$→.$F4Was?
01900	
02000	$←l$+w$→l$←r$-w$→r$.	Change temporary margins
02100	$F3$jIf I add any new glorious features, the remainder of this page will
02200	show examples of the beautiful things you can use them for.  For now,
02300	mostly blank space on this page...$.
02400	$|\\.Change escape character back to standard...
02500